package com.yincai.carefreewater.base;

import android.app.Application;
import android.content.Context;
import android.os.Handler;
import android.util.Log;
import android.widget.Toast;


import com.umeng.message.IUmengRegisterCallback;
import com.umeng.message.MsgConstant;
import com.umeng.message.PushAgent;
import com.umeng.message.UTrack;
import com.umeng.message.UmengMessageHandler;
import com.umeng.message.UmengNotificationClickHandler;
import com.umeng.message.common.UmLog;
import com.umeng.message.entity.UMessage;
import com.yincai.carefreewater.db.DatabaseHelper;
import com.yincai.carefreewater.tool.ShareTool;
import com.yincai.carefreewater.usb.UsbTool;

import org.json.JSONException;
import org.json.JSONObject;


/**
 * Created by $zhangke on 2017/5/16.
 *
 */

public class MyApplication extends Application {
    private static final String TAG ="tag" ;
    private static MyApplication myAppclient;
    private Handler handler;
    public static final String UPDATE_STATUS_ACTION = "com.umeng.message.example.action.UPDATE_STATUS";

    @Override
    public void onCreate() {
        super.onCreate();
        myAppclient=this;
        DatabaseHelper helper=new DatabaseHelper(this);
        initUpush();
    }

    public static MyApplication getMyAppclient(){
        return myAppclient;
    }

    public void writeToUSb(String s){
        byte[] data = s.getBytes();
        UsbTool.getInstance().writeToUsb(data);

    }
    public  static  MyApplication getInsatence(){

        return  myAppclient;
    }
    private void initUpush() {
        final PushAgent mPushAgent = PushAgent.getInstance(this);
        mPushAgent.setDebugMode(true);
        handler = new Handler();
        //sdk开启通知声音
        mPushAgent.setNotificationPlaySound(MsgConstant.NOTIFICATION_PLAY_SDK_ENABLE);
        // sdk关闭通知声音
//		mPushAgent.setNotificationPlaySound(MsgConstant.NOTIFICATION_PLAY_SDK_DISABLE);
        // 通知声音由服务端控制
//		mPushAgent.setNotificationPlaySound(MsgConstant.NOTIFICATION_PLAY_SERVER);

//		mPushAgent.setNotificationPlayLights(MsgConstant.NOTIFICATION_PLAY_SDK_DISABLE);
//		mPushAgent.setNotificationPlayVibrate(MsgConstant.NOTIFICATION_PLAY_SDK_DISABLE);


        UmengMessageHandler messageHandler = new UmengMessageHandler() {
            /**
             * 自定义消息的回调方法
             * */
            @Override
            public void dealWithCustomMessage(final Context context, final UMessage msg) {

                handler.post(new Runnable() {

                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        // 对自定义消息的处理方式，点击或者忽略
                        boolean isClickOrDismissed = true;
                        if (isClickOrDismissed) {
                            //自定义消息的点击统计
                            UTrack.getInstance(getApplicationContext()).trackMsgClick(msg);
                        } else {
                            //自定义消息的忽略统计
                            UTrack.getInstance(getApplicationContext()).trackMsgDismissed(msg);
                        }
                        Toast.makeText(context, msg.custom, Toast.LENGTH_LONG).show();
                        String json =msg.custom;
                        Log.i("tag", "run:----------------------------------------------- "+json);
                        try {
                            JSONObject jso=new JSONObject(json);
                            String mold = jso.optString("mold");
                            String moldval = jso.optString("moldval");
                            String description = jso.optString("description");
                            String title = jso.optString("title");
                            String device_token = jso.optString("device_token");
                            switch (mold){
                                case "1":
                                    writeToUSb(moldval);
                                    break;
                                case "2":
//                                    MainActivity main = getMain();
//                                    main.conInorOut(6);
                                    String  msg_send="AT+LBKOFF";
                                    writeToUSb(msg_send);
                                    break;
                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }


                    }
                });
            }

            /**
             * 自定义通知栏样式的回调方法
             * */
//            @Override
//            public Notification getNotification(Context context, UMessage msg) {
//                switch (msg.builder_id) {
//                    case 1:
//                        Notification.Builder builder = new Notification.Builder(context);
//                        RemoteViews myNotificationView = new RemoteViews(context.getPackageName(), R.layout.notification_view);
//                        myNotificationView.setTextViewText(R.id.notification_title, msg.title);
//                        myNotificationView.setTextViewText(R.id.notification_text, msg.text);
//                        myNotificationView.setImageViewBitmap(R.id.notification_large_icon, getLargeIcon(context, msg));
//                        myNotificationView.setImageViewResource(R.id.notification_small_icon, getSmallIconId(context, msg));
//                        builder.setContent(myNotificationView)
//                                .setSmallIcon(getSmallIconId(context, msg))
//                                .setTicker(msg.ticker)
//                                .setAutoCancel(true);
//
//                        return builder.getNotification();
//                    default:
//                        //默认为0，若填写的builder_id并不存在，也使用默认。
//                        return super.getNotification(context, msg);
//                }
//            }
        };
        mPushAgent.setMessageHandler(messageHandler);

        /**
         * 自定义行为的回调处理，参考文档：高级功能-通知的展示及提醒-自定义通知打开动作
         * UmengNotificationClickHandler是在BroadcastReceiver中被调用，故
         * 如果需启动Activity，需添加Intent.FLAG_ACTIVITY_NEW_TASK
         * */
        UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler() {
            @Override
            public void dealWithCustomAction(Context context, UMessage msg) {
                Toast.makeText(context, msg.custom, Toast.LENGTH_LONG).show();
            }
        };
        //使用自定义的NotificationHandler，来结合友盟统计处理消息通知，参考http://bbs.umeng.com/thread-11112-1-1.html
        //CustomNotificationHandler notificationClickHandler = new CustomNotificationHandler();
        mPushAgent.setNotificationClickHandler(notificationClickHandler);

         new  Thread(  new Runnable() {
                     @Override
                     public void run() {
                         //注册推送服务 每次调用register都会回调该接口
                         mPushAgent.register(new IUmengRegisterCallback() {
                             @Override
                             public void onSuccess(String deviceToken) {
                                 UmLog.i(TAG, "友盟设备标识: " + deviceToken);
                                 // sendBroadcast(new Intent(UPDATE_STATUS_ACTION));
                                 ShareTool.saveInfo(getApplicationContext(),"dev",deviceToken);
                             }

                             @Override
                             public void onFailure(String s, String s1) {
                                 UmLog.i(TAG, "友盟注册失败: " + s + " " +s1);
                                 //  sendBroadcast(new Intent(UPDATE_STATUS_ACTION));
                             }
                         });

                     }
                 }).start();


        //此处是完全自定义处理设置，两个例子，任选一种即可
//        mPushAgent.setPushIntentServiceClass(MyPushIntentService.class);
//        mPushAgent.setPushIntentServiceClass(UmengNotificationService.class);
    }
}
